#%%
import os
import time
import requests

import logging

logging.basicConfig(
    # filename="access.log",
    format="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S %p",
    level=logging.INFO,
)


def progressbar(url, path):

    if not os.path.exists(os.path.join(path)[0]):
        os.makedirs(os.path.join(path)[0])

    logging.info(f"downloading from [{url}] , save to {path}")

    """带进度条的下载函数"""
    start = time.time()  # 下载开始时间
    response = requests.get(url, stream=True)  # stream=True必须写上
    size = 0  # 初始化已下载大小
    chunk_size = 1024  # 每次下载的数据大小
    content_size = int(response.headers["content-length"])  # 下载文件总大小
    try:
        if response.status_code == 200:  # 判断是否响应成功
            print(
                "Start download,[File size]:{size:.2f} MB".format(
                    size=content_size / chunk_size / 1024
                )
            )  # 开始下载，显示下载文件大小
            filepath = path
            with open(filepath, "wb") as file:  # 显示进度条
                for data in response.iter_content(chunk_size=chunk_size):
                    file.write(data)
                    size += len(data)
                    print(
                        "\r"
                        + "[下载进度]:%s%.2f%%"
                        % (
                            ">" * int(size * 50 / content_size),
                            float(size / content_size * 100),
                        ),
                        end=" ",
                    )
        end = time.time()  # 下载结束时间
        print("Download completed!,times: %.2f秒" % (end - start))  # 输出下载用时时间
    except:
        print("Exception occurs in Downloading...")

    logging.info(f"downloa done")
    logging.info("=" * 50)
